4 角色权限分配
根据RBAC模型,当创建好权限后,需要把权限先分配角色,再把角色授权给用户和组织使用。权限和角色之间是多对多关系,即1个角色可以拥有多个权限,1个权限可以分配给多个角色。
权限分配给角色,同时支持在开发时和运行时两种环境进行设置。
1.开发时设置
(1)实现原理
开发时设置是指在开发阶段就把权限和角色的关系设置好,应用运行时无需设置此项内容就可以对访问用户做访问约束。开发时设置相当于先内置角色权限在微服务中。
配置文件写入
开发时设置会把角色和权限的关联关系写入到metainfo配置文件中,后续在门户中注册微服务后,门户会读取微服务的metainfo配置文件把角色和权限数据加载出来。关联关系是配置到roles节点的permissions项中。
数据库表写入
开发时设置是写入到门户的permission_debug表。permission_debug即是权限表,也是角色和权限关联表,通过role_id将权限关联到角色。比如:
(2)实现效果
在页面制作的工作台,点击右上角的齿轮按钮,可以进入开发时设置的页面,如下图所示:
主要操作如下:
- 在增加或者编辑角色过程中,可以选择相关联的权限
可以从功能权限、数据权限和API权限等方面进行权限的单选或者多选,比如功能权限方面可以选择多个页面,也可以同时在数据权限、API权限中再选择加入几个权限,这块可以根据业务需要自行设置。
- 功能权限选择
- 数据权限选择
- API权限选择
- 权限和角色配置后,在列表页面中需要点击保存配置文件保存设置
2.运行时设置
除了在开发阶段配置好权限和角色后,也可以在应用运行中动态设置权限和角色的分配关系。
(1)实现原理
开发时设置相当于先内置角色权限在微服务中,这样就固化了这块的内容。在实际使用场景中,经常会需要额外添加权限和角色,以及授权给更多用户使用。这时如果只有开发时设置是不够的,需要在运行时灵活进行配置。
数据库表写入
运行时设置是写入到门户的permission表(区别于permission_debug表)。permission同样即是权限表,也是角色和权限关联表,通过role_id将权限关联到角色。比如:
(2)实现效果
运行时设置是在正式门户中维护(因此应用需要发布后才能进行设置),打开路径是在应用资源管理页面:
设置过程和开发时环境类似,设置后需要点击保存并且发布按钮进行保存:
如果某些角色只有查看操作,说明该角色是从开发时设置发布后带过来的,只能查看不能编辑。只有在运行时添加的角色,才能进行编辑和删除。如下图所示: